package com.ruoyi.caipiao.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.caipiao.domain.CaipiaoPl5;
import com.ruoyi.caipiao.domain.CaipiaoPl5MethodTwo;
import com.ruoyi.caipiao.dto.req.GeneratePl5Req;

/**
 * 排列5计算Service接口
 *
 * @author ruoyi
 * @date 2025-03-01
 */
public interface ICaipiaoPl5Service extends IService<CaipiaoPl5> {
    /**public
     * 查询排列5计算
     *
     * @param id 排列5计算主键
     * @return 排列5计算
     */
    CaipiaoPl5 selectCaipiaoPl5ById(Long id);

    /**
     * 查询排列5计算列表
     *
     * @param caipiaoPl5 排列5计算
     * @return 排列5计算集合
     */
    List<CaipiaoPl5> selectCaipiaoPl5List(CaipiaoPl5 caipiaoPl5);

    /**
     * 新增排列5计算
     *
     * @param caipiaoPl5 排列5计算
     * @return 结果
     */
    int insertCaipiaoPl5(CaipiaoPl5 caipiaoPl5);

    /**
     * 修改排列5计算
     *
     * @param caipiaoPl5 排列5计算
     * @return 结果
     */
    int updateCaipiaoPl5(CaipiaoPl5 caipiaoPl5);

    /**
     * 批量删除排列5计算
     *
     * @param ids 需要删除的排列5计算主键集合
     * @return 结果
     */
    int deleteCaipiaoPl5ByIds(Long[] ids);

    /**
     * 删除排列5计算信息
     *
     * @param id 排列5计算主键
     * @return 结果
     */
    int deleteCaipiaoPl5ById(Long id);

    /**
     * 方法1 上一期开的号码作为各位置的排除
     *
     * @param generatePl5Req
     * @return
     */
    String generateNumMethod1(GeneratePl5Req generatePl5Req);

    /**
     * 方法2 交集获取得到2注号码，这两注号码的计算位置号码一样，则这个号码作为这个位置的排除号码
     *
     * @param generatePl5Req
     * @return
     */
    String generateNumMethod2(GeneratePl5Req generatePl5Req);

    /**
     * 方法3 统计最近某个位置上一期某个号码后，开出另一号码的次数，获取开出次数最多的那个号码作为排除
     *
     * @param generatePl5Req
     * @return
     */
    String generateNumMethod3(GeneratePl5Req generatePl5Req);

    String generateNumMethod4(GeneratePl5Req generatePl5Req);

    void addPl5Num(GeneratePl5Req generatePl5Req);

    String getKjNum(String qs);

    /**
     * 各位置的前n期，分成3个组期， 号码交集合作为排除
     *
     * @param generatePl5Req
     * @return
     */
    String generateNumMethod5(GeneratePl5Req generatePl5Req);

    /**
     * 随机10注，把每个位置最多的排除
     *
     * @param generatePl5Req
     * @return
     */
    String generateNumMethod6(GeneratePl5Req generatePl5Req);
}
